Skip to content

Conversation

@gabrielschulhof
Copy link

@gabrielschulhof gabrielschulhof commented Nov 24, 2025

The new option addTypenameToInterfaces adds the __typename field to types resulting from interfaces. The field admits a union of string values, each the name of one of the concrete types implementing the interface.

Also adds field typeUnionOperator to class BaseVisitor so we don't have the literal ' | ' in a bunch of places.

🚨 IMPORTANT: Please do not create a Pull Request without creating an issue first.

Any change needs to be discussed before proceeding. Failure to do so may result in the rejection of the pull request.

Description

Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.

This will allow us to treat incoming objects uniformly using their parent type, and will also allow us to type cast appropriately when the handling of the individual object begins to diverge based on their type.

Related #10522

Type of change

Please delete options that are not relevant.

  • New feature (non-breaking change which adds functionality)
  • This change requires a documentation update

Screenshots/Sandbox (if appropriate/relevant):

Adding links to sandbox or providing screenshots can help us understand more about this PR and take action on it as appropriate

How Has This Been Tested?

A unit test is included. The remaining unit tests verify that no change occurs when the option is absent.

Test Environment:

  • OS: OSX
  • NodeJS: 20

Checklist:

  • I have followed the CONTRIBUTING doc and the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes

@changeset-bot
Copy link

changeset-bot bot commented Nov 24, 2025

⚠️ No Changeset found

Latest commit: 28f21a8

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@gabrielschulhof gabrielschulhof force-pushed the add-concrete-type-names-to-interface-__typename branch from 2fc7ab8 to dc25d42 Compare November 24, 2025 22:28
The new option `addTypenameToInterfaces` adds the `__typename` field to
types resulting from interfaces. The field admits a union of string
values, each the name of one of the concrete types implementing the
interface.

Also adds field `typeUnionOperator` to class `BaseVisitor` so we don't
have the literal `' | '` in a bunch of places.
@gabrielschulhof gabrielschulhof force-pushed the add-concrete-type-names-to-interface-__typename branch from dc25d42 to 28f21a8 Compare November 24, 2025 22:33
@gabrielschulhof gabrielschulhof changed the title feat: add options to add __typename to interfaces feat: add option to add __typename to interfaces Nov 24, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant